package com.whfc.ms.api.safety.service;

import com.whfc.common.result.PageData;
import com.whfc.safety.dto.SafetyIssueDTO;
import com.whfc.safety.dto.SafetyIssueTypeDTO;
import com.whfc.safety.param.SafetyIssueAddParam;
import com.whfc.safety.param.SafetyIssueEditParam;
import com.whfc.safety.param.SafetyIssueTypeAddParam;
import com.whfc.safety.param.SafetyIssueTypeEditParam;

import java.util.List;

/**
 * @author : qzexing
 * @version : 1.0
 * @date : 2020-07-30 18:49
 */
public interface MsSafetyIssueService {


    /**
     * 获取质量问题类型列表
     *
     * @param deptId  组织机构ID
     * @param keyword 搜索关键字
     * @return 质量问题类型列表
     */
    List<SafetyIssueTypeDTO> issueTypeList(Integer deptId, String keyword);


    /**
     * 新增质量问题类型
     *
     * @param addParam 组织机构ID
     */
    void addIssueType(SafetyIssueTypeAddParam addParam);

    /**
     * 编辑质量问题类型
     *
     * @param editParam 质量问题类型ID
     */
    void editIssueType(SafetyIssueTypeEditParam editParam);

    /**
     * 删除质量问题类型
     *
     * @param issueTypeId 质量问题类型ID
     */
    void delIssueType(Long issueTypeId);


    /**
     * 获取质量问题列表  (不分页)
     *
     * @param issueTypeId 质量问题明细ID
     * @return 质量问题列表
     */
    List<SafetyIssueDTO> issueList(Long issueTypeId);

    /**
     * 获取质量问题列表  （分页）
     *
     * @param issueTypeId 质量问题明细ID
     * @param pageNum     页码
     * @param pageSize    每页数量
     * @return 质量问题列表
     */
    PageData<SafetyIssueDTO> issueList(Long issueTypeId, Integer pageNum, Integer pageSize);


    /**
     * 新增质量问题
     *
     * @param addParam 组织机构ID
     */
    void addIssue(SafetyIssueAddParam addParam);

    /**
     * 编辑质量问题
     *
     * @param editParam 质量问题ID
     */
    void editIssue(SafetyIssueEditParam editParam);

    /**
     * 删除质量问题类型
     *
     * @param issueId 质量问题ID
     */
    void delIssue(Long issueId);

    /**
     * 禁用/启用质量问题明细
     *
     * @param issueId 问题明细表主键
     * @param enable  是否启用0-禁用  1-启用
     * @return
     * @author hw
     * @date 2020/8/4 16:38
     **/
    void disableOrEnabledIssue(Long issueId, Integer enable);

    /**
     * 获取使用组织机构ID查询质量问题列表
     *
     * @param deptId 组织机构id
     * @return
     * @author hw
     * @date 2020/8/12 9:53
     **/
    List<SafetyIssueDTO> issueList(Integer deptId);

    void deleteBatch(List<Integer> idList);
}
